package cl.duocap.refaxion.view.bean;

import java.io.Serializable;
import java.text.SimpleDateFormat;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;

import javax.annotation.PostConstruct;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import cl.duocap.refaxion.arquitectura.Jsf2Util;
import cl.duocap.refaxion.dto.ServicioDTO;
import cl.duocap.refaxion.servicios.ServicioService;


@ManagedBean(name="formServicioVerBean")
@SessionScoped
public class FormServicioVerBean implements Serializable{


	private static final long serialVersionUID = 1L;
	private ServicioDTO servicioEditado;
	private List<ServicioDTO> listaServicioObtenida;
	private Map<String,Integer> listaServicioCombo;
	private int idServicioEditar;
	@ManagedProperty("#{jsf2Util}")
	private Jsf2Util jsf2Util;
	
	
	
	
	public FormServicioVerBean() {
	}




	public ServicioDTO getServicioEditado() {
		return servicioEditado;
	}




	public void setServicioEditado(ServicioDTO servicioEditado) {
		this.servicioEditado = servicioEditado;
	}




	public List<ServicioDTO> getListaServicioObtenida() {
		return listaServicioObtenida;
	}




	public void setListaServicioObtenida(List<ServicioDTO> listaServicioObtenida) {
		this.listaServicioObtenida = listaServicioObtenida;
	}




	public Map<String, Integer> getListaServicioCombo() {
		return listaServicioCombo;
	}




	public void setListaServicioCombo(Map<String, Integer> listaServicioCombo) {
		this.listaServicioCombo = listaServicioCombo;
	}




	public int getIdServicioEditar() {
		return idServicioEditar;
	}




	public void setIdServicioEditar(int idServicioEditar) {
		this.idServicioEditar = idServicioEditar;
	}




	public Jsf2Util getJsf2Util() {
		return jsf2Util;
	}




	public void setJsf2Util(Jsf2Util jsf2Util) {
		this.jsf2Util = jsf2Util;
	}




	public static long getSerialversionuid() {
		return serialVersionUID;
	}



	@PostConstruct
	public void iniciar(){
		if(FacesContext.getCurrentInstance().isPostback()){
			return;
		}
		//carga combo de servicios
		ServicioService servicio = new ServicioService();
		setListaServicioObtenida(servicio.obtenerServicios());
		
		listaServicioCombo = new LinkedHashMap<String, Integer>();
		for (ServicioDTO t : listaServicioObtenida) {
			listaServicioCombo.put(t.getServicioDescripcion(), t.getIdServicio());
		}
		cargarServicioEditar();
	}
		///////////////////////////////////////////////////////////////////////////////////

	private void cargarServicioEditar() {
		idServicioEditar = Integer.parseInt(jsf2Util.getParameter("idServicio"));
		ServicioService servicio = new ServicioService();
		setServicioEditado(servicio.cargarServicioEditar(idServicioEditar));
	}
	
	public String editarServicio(){

		SimpleDateFormat dateformatJava = new SimpleDateFormat("dd-MM-yyyy");
		servicioEditado.setFechaCreacion(dateformatJava.format(servicioEditado.getFechaIngresoRecibir()));
		servicioEditado.setIdServicio(idServicioEditar);
		ServicioService servicio = new ServicioService();
		if(servicio.editarServicio(servicioEditado)){
			return "mainServicio.xhtml?faces-redirect=true";
			
		}else{
			return "formServicioEditar.xhtml?faces-redirect=true";
		}
	}
	
	public void editListener() { 
        FacesContext context = FacesContext.getCurrentInstance();  		        
        context.addMessage(null, new FacesMessage("Informacion", "La informacion del Servicio se modifico con exito."));
	} 
	
	 
}
